﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Abp.Application.Services;
using X.PagedList;

namespace FwProject.PrePaymentInfo.Dto
{
    public interface IReceiptInfoAppService: IApplicationService
    {
        /// <summary>
        /// 修改缴款状态
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task EditStatus(Guid id, Guid payMentId);

        Task Update(Guid id, ReceiptInfoInput input);

        Task Submit(Guid id);

        Task Examine(Guid id);

        Task AnTiExamine(Guid id);
        /// <summary>
        /// 收款作废
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task ToVoid(Guid id);

        /// <summary>
        /// 获取一条收款信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ReceiptInfoDto GetById(Guid id);

        Task<IPagedList<ReceiptViewDto>> GetReceiptListAsync(int pageIdx, int pageSize);

        Task<IPagedList<ReceiptInfoDto>> GetPagedListAsync(int pageIdx, int pageSize, DateTime? ReceiptBeginTime, DateTime? ReceiptEndTime, DateTime? PaymentBeginTime, DateTime? PaymentEndTime, long? AgentPeoperUserId, long? PaymentPersonUserId, string ReceiptInfoNumber, string RestaurantName, ReceiptInfoStatus? ReceiptInfoStatus);

        Task<List<ReceiptInfoDto>> GetAllListAsync(DateTime? ReceiptBeginTime, DateTime? ReceiptEndTime, DateTime? PaymentBeginTime, DateTime? PaymentEndTime, long? AgentPeoperUserId, long? PaymentPersonUserId, string ReceiptInfoNumber, string RestaurantName, ReceiptInfoStatus? ReceiptInfoStatus);

        Task<List<ReceiptDetailsDto>> GetReceiptDetailsAsync(long AgentPeoperUserId, DateTime? beginTime, DateTime? endTime, ReceiptInfoStatus? ReceiptInfoStatus);

        /// <summary>
        /// App 收据收款
        /// </summary>
        /// <param name="infoDto"></param>
        /// <returns></returns>
        Task CreateReceipt(ReceiptInfoInputEdit infoDto);
        /// <summary>
        /// 快速收款
        /// </summary>
        /// <param name="infoDto"></param>
        /// <returns></returns>
        Task CreateQuickReceipt(ReceiptInfoInputQuickEdit infoDto);

        /// <summary>
        /// 后台管理-创建收款单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Guid> Create_Management(ReceiptInfoEnterDto input);

        Task QuickReceipt(QuickReceiptListOutput input);



    }
}
